﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace UploadDocLib01.Word
{
    public sealed class CommonDataLayer
    {
        public CommonDataLayer(SPWeb web)
        {
            Web = web;
        }

        public SPWeb Web
        {
            get;
            private set;
        }

        public SPSite Site
        {
            get
            {
                return Web.Site;
            }
        }
        #region Constants
        private const string FILE_URL_NULL = "Не удалось создать файл. Не указан путь.";
        #endregion

        /// <summary>
        /// Записывает файл по указанному пути
        /// </summary>
        /// <param name="newFile">файл</param>
        /// <param name="fullPath">полный путь, включая название файла</param>
        /// <param name="web">узел</param>
        /// <returns></returns>
        public SPFile CreateDocument(Stream newFile, string fullPath)
        {
            if (String.IsNullOrEmpty(fullPath))
            {
                throw new ArgumentException(FILE_URL_NULL);
            }
            Web.AllowUnsafeUpdates = true;
            SPFile file = Web.Files.Add(fullPath, newFile, true);
            Web.AllowUnsafeUpdates = false;
            return file;
        }

        /// <summary>
        /// Генерирует Word-файл и записывает по указанному пути
        /// </summary>
        /// <param name="web"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static string GenerateFileInLibrary(SPWeb web, string filePath, Stream newTemplate)
        {
            SPFile templateFile = new CommonDataLayer(web).CreateDocument(newTemplate, filePath);
            return templateFile.Url;
        }
    }
}
